Contact cropping from images

ABSTRACT

The present disclosure provides methods and systems for storing image data in a mobile device. In some embodiments, the method includes generating an image on the mobile device, identifying automatically at least one person in the image, creating a cropped image of the at least one person and storing the cropped image to memory upon request of a user of the mobile device.

TECHNICAL FIELD

This disclosure relates to methods and systems for manipulating digitalimages, and more particularly to automatic cropping of images.

BACKGROUND

People are social creatures—some more social than others. We expressthis socialization through relationships, and we carry it out throughnetworking and communication. Networking can be for both social andbusiness purposes. For example, a person may meet an important businessconnection or potential client at a conference, seminar or other event.Similarly, a person may meet a potential friend or romantic interestduring a night out, or at a sporting event, concert, or other socialevent.

SUMMARY

This document discloses methods, techniques, and systems for storing andmanaging image data in a mobile device. In some embodiments, the methodsincludes generating an image on the mobile device, identifyingautomatically at least one person in the image, creating a cropped imageof the person, and storing the cropped image to memory upon request of auser of the mobile device.

In some aspects, the method further includes prompting the user to storethe cropped image of the at least one person as a contact. The user maybe prompted to select one of a new contact and a previous contact. Thecontact information may be updated using the cropped image when the userselects a previously stored contact, and new contact informationincluding the cropped image may be stored when the user selects a newcontact.

In other aspects, the method further includes generating a cropperimeter that corresponds to the at least one person and enabling theuser to adjust dimensions of the crop perimeter to provide an adjustedcrop perimeter. The cropped image may be based on one of the cropperimeter and the adjusted crop perimeter.

In another aspect, the method also includes determining automaticallywhether multiple persons are present in the image, and enabling the userto select a single person when multiple persons are present in theimage. The step of creating the cropped image of the at least one personmay be based on a selected single person. The method may also includegenerating crop perimeters corresponding to each of the multiplepersons, wherein the step of enabling the user to select a single personincludes enabling the user to select one of the crop perimeters toprovide a selected crop perimeter. The user may adjust dimensions of theselected crop perimeter to provide an adjusted crop perimeter. Thecropped image may be based on one of the selected crop perimeter and theadjusted crop perimeter.

In yet other aspects, the method further includes querying the user iswhether to store the image to memory, storing the image to memory if theuser indicates as such, and purging the image if the user indicates assuch.

The details of one or more embodiments are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1A is a schematic representation of a display of a mobile device ina picture mode.

FIG. 1B is a schematic representation of the display of FIG. 1A, whereinthe mobile device is in a contact detail mode.

FIG. 1C is a schematic representation of the display of FIG. 1A, whereinthe mobile device is in a contact selection mode.

FIG. 2A is a flow chart of a process for associating a portion of animage with contact-related information.

FIG. 2B illustrates exemplary steps that may be executed in an automaticcropping method.

FIG. 3 is a schematic representation of an exemplary mobile device thatimplements embodiments of the automatic cropping described herein.

FIG. 4 is a block diagram illustrating the internal architecture of thedevice of FIG. 3.

FIG. 5 is a block diagram illustrating exemplary components of theoperating system used by the device of FIG. 3.

FIG. 6 is a block diagram illustrating exemplary processes implementedby the operating system kernel of FIG. 5.

FIG. 7 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

In various embodiments, automatic cropping may enable a person ormultiple persons to automatically be identified in an image and toautomatically generate a cropped image of an identified person orpersons. The cropped image may be stored to a memory and may beassociated with a contact. The contact information may in turn besynchronized with a desktop computer. In addition, the image may be usedin various manners, such as in a visual index by which a user can pullup contact information about acquaintances or visually dial thoseacquaintances on the telephone.

Such techniques may provide one or more advantages. For example, a usermay readily obtain information for adding a visual element to a userinterface. Such an additional visual element may greatly simplify andenhance a user's interaction with a mobile device. In addition, aphotograph of an acquaintance may help trigger a user's memory about theacquaintance, such as for a user who meets many different people andcannot always keep their names straight.

One known technique for facial identification is disclosed in commonlyassigned U.S. Pat. No. 6,301,370, issued on Oct. 9, 2001, and entitledFace Recognition From Video Images, the disclosure of which is expresslyincorporated herein by reference. U.S. Pat. No. 6,301,370 describes amethod for detecting and recognizing an object in an image frame such asa head having particular facial characteristics, for example. The objectidentification and recognition process uses an image processingtechnique based on model graphs and bunch graphs that efficientlyrepresent image features as jets. The jets are composed of wavelettransforms and are processed at nodes or landmark locations on an imagecorresponding to readily identifiable features.

FIGS. 1A-1C are schematic representations of various graphical userinterface (GUI) displays 101, 108, 112 of a mobile device (see, forexample, FIG. 3). More specifically, FIG. 1A is a schematicrepresentation of the display 101 of the mobile device in a picturemode. The device may be programmed to identify portions of individualswithin a photograph or image that is provided on the mobile device andprompt a user of the device to indicate whether they are interested inperforming certain functions relative to the portion, e.g., the face, ofthe individual. For example, where a face has been identified usingvarious known techniques, the device may determine that a user could beinterested in storing information about the person who is shown in thedigital image. The digital image can be recorded by the device itself,such as by using a digital camera coupled to the device, or can betransferred to the device from an external source.

In particular, a crop perimeter 100, 102 has been automaticallygenerated for each person in a group of two people identified in theimage in display 101, by techniques that can identify a face in animage. The crop perimeters 100, 102 may designateautomatically-generated suggested cut lines that permit a portion of theimage to be removed so that a selected portion can be seen more clearly(e.g., by later zooming in on the selected portion). Alternatively, thecrop perimeters may be manually identified, such as by a user indicatingan intent to crop out a portion of a figure, and the user thenmanipulating the crop perimeter (e.g., by steering it in x and ydirections with a 4-direction key and changing its size with a scrollwheel on a mobile device) to select a portion to be cropped from theimage. Although the crop perimeters 100, 102 of FIG. 1A are illustratedas rectangles, other shapes can be implemented including, but notlimited to, a square, a circle, an ellipse, a triangle, a star, apentagon, a hexagon, an octagon, and even a user-defined shape. Suchcropping thus enables an image (e.g., a still image or a video image) tobe taken using the mobile device, and a portion of the acquired image tobe used in various manner.

Where multiple people appear in an image, the user may be prompted toselect a desired person. This selection can occur by the user scrollingthrough the identified persons, such as with a 4-direction key or atouch-screen display. In one embodiment, a selected person may beidentified by a solid-lined crop perimeter (e.g., crop perimeter 100),while a non-selected person may be identified by a dashed orphantom-lined crop perimeter (e.g., crop perimeter 102), or vice versa.As the user scrolls between persons, the crop perimeters switch betweenthe solid-lined crop perimeter 100 and the phantom-lined crop perimeter102. For example, in the exemplary image of FIG. 1A, the selectedidentified person may be indicated by the solid lined crop perimeter100. Also, different line colors or line weights may be used to indicatewhich individuals in a picture are currently selected and which are not.

Upon selecting an identified person, the user may adjust the dimensionsof the crop perimeter 100, 102. More specifically, the user may adjustthe height, width, circumference, and/or any other appropriatedimension. In this manner, the automatically generated crop perimeter100, 102 may be tailored by the user to encompass as much or as littleof the identified person as desired, even if the location of the cropperimeter and its initial size are identified automatically. Forexample, the automatically generated crop perimeter 100, 102 may beadjusted by the user to encompass the facial area of the identifiedperson. As another example, the automatically generated crop perimeter100, 102 may be adjusted to encompass the entire body of the identifiedperson or a desired portion of the body of the identified person. Inaddition, multiple people may be enveloped by the crop perimeter, suchas when a user intends to associate the cropped image with an entryassociated with a pair of twins.

The area of the image, which is encompassed by the automaticallygenerated crop perimeter or the adjusted crop perimeter, may then bestored as a cropped image. The main image may be discarded or may beseparately stored. In addition, the main image may be stored, and thecropped portion may be referenced as a part of the saved main image, sothat separate storage of a main image and a cropped image is notrequired.

The user may be presented with buttons 104, 106 in display 101 to selectan action to be performed relative to a selected portion of an image.The buttons may be selected for display based on an application the useris operating (e.g., if they acquired the image while they had theircontacts program operating), by the content of the image (e.g., if facesare identified in the image), or by other factors, such as suggestingthat a user make a contact out of an image whenever the image is takenat a certain time (e.g., late at night) or in a certain place (e.g., ata convention or at a bar) as determined, for example using GPScapabilities and geo-data accessible to the mobile device.

In this example, the user is presented with buttons to begin a processof adding portions of the image to contacts records for the user. In theexample, the user may select button 104 to indicate that the personcurrently selected in an image is a new contact, i.e., someone for whomthe user does not currently have stored contact information. The usermay select button 106 to indicate that the person currently selected inan image is a current contact, i.e., someone for whom the user hascontact information but does not have a picture (the user could alsoalready have a picture but may wish to append the newest picture to arecord associated with a particular acquaintance).

When the user identifies the image as relating to a new contact, thedevice may open a blank contact form with the cropped image insertedinto the form. Where the user identifies the images as relating to anexisting contact, the device may prompt the user in familiar ways toidentify the contact, such as by typing the first few letters of thecontact's last name so that the device may then display a list of allcontacts that match those letters, and the user may then scroll up anddown in the list to select the particular appropriate contact.

FIG. 1B illustrates a display 101 that shows a filled-in contact recordassociated with a cropped portion of an image. The contact informationmay include, but is not limited to, name, title, home address, hometelephone number, work address, work telephone number, fax number, emailaddress, personal email address, Google® Talk identification, birthdate, sex, and or user authored notes. The image associated with thecontact record may be either static or moving (e.g., a short audio/videoclip of the person, with the facial area cropped out). The user mayenter the contact information manually, e.g., by typing or writing, mayreceive the information via a transmission from another user, e.g., overBluetooth or other appropriate mechanism, or by other mechanisms, suchas by receiving an e-mail sent from the other person's device thatcontains contact information for the user than can be readilytransferred by a device into a contact record (e.g., a V Card). Inaddition, the cropped image and related contact information may then betransmitted or synchronized between the user's mobile device and otherdevices owned by the user such as a laptop or desktop computer, instandard manners for synchronizing contact information.

FIG. 1C is an exemplary schematic representation of a display 112 in anexemplary contact selection mode. The display 112 provides anillustration of an use that can be made of captured image content thathas been associated with a contacts program on a mobile device. In thisexample, the information is used in a visual phonebook, includingcontacts' first names and an associated pictures.

The pictures may be based on the cropped image described above. In someinstances, a picture may not be available for one or more contacts. Insuch a situation, the picture associated with a particular contact mayinclude an icon, such as is the case with contacts “Debra” and “Sara” ofFIG. 1C. The icon may be received, for instance from a device of theother user, or may be selected by the person operating the display 112.For example, as a help in remembering who Sara and Debra are, the usermay have received the impression that Debra was very much like a flowerchild, and thus selected a peace sign to represent her, and may haveobserved that Sara was very happy, and thus selected a smiley face torepresent her. If no icon is assigned, the picture associated with aparticular contact may include a generic silhouette, as is the case withcontact “Frank” of FIG. 1C. Pictures may also be obtained via otherroutes, such as from social networking web sites where members postphotos and other information.

In the mode shown in FIG. 1C, the GUI enables a user to scroll throughthe phonebook images and select a contact based thereon. Once a contacthas been selected, the user may have several options including, but notlimited to, calling the contact, text messaging (e.g., SMS) the contact,telephony messaging (MMS) the contact, emailing the contact and/orediting the contact information.

When a particular contact has been selected, the images of the othercontacts may be removed, and information associated with the selectedcontact displayed instead. For example, the image of the selectedcontact may be moved to one side of the display, and buttonsrepresenting options for actions that may be performed on the device maybe displayed.

It may further be provided that the contact image is provided as athree-dimensional (3D) image as opposed to a two-dimensional (2D), orflat, image. More specifically, the cropped image can be mapped onto a3D model of a human face, for example. The 3D model can be a standardmodel, can be selected from a plurality of 3D models and/or can begenerated based on the cropped image itself. In this manner, the user isprovided with a life-like, 3D icon of a contact.

FIG. 2A is a flow chart of a process for associating a portion of animage with contact-related information. At box 201, an image isinitially acquired. The acquisition of the image may occur, for example,by the taking of a picture with a digital camera that is part of amobile device such as a smartphone. At box 203, a face or faces areidentified in the images. Such identification may have occurred beforethe image was acquired, such as part of a camera auto-focus process thatidentifies faces in order to provide an auto focus point for a device.Or the faces may be identified from an image that has been acquired. Theinitial identification of the face may be automatic, and in certainimplementations, a user of the device may adjust a boundary that makesthe identification of the face, by moving the boundary, enlarging orshrinking it, or changing its shape.

The process may then crop the identified faces out of the image, at box205. Where there are multiple faces, the cropping may occur at once ormay be conducted serially. Various approaches for such cropping may beused, such as by forming images that are separate from the main imageand displaying the cropped images side-by-side for further manipulation,or by showing them one-by-one. Also, the cropped portions may be left inposition on the display while the rest of the image is eliminated aroundthem. In addition, the cropped images may be enlarges or shrunk to fit astandard-sized space, such as a photo frame in a contacts databaserecord. Padding may also be added to the cropped image to make it fit aparticular size and shape.

At box 207, the cropped image is associated with contact information ina contacts database, such as a standard contacts application that ispart of a personal organizer. The association may occur in a number ofmanners, such as manual data entry, linking to an existing contact,short-range wireless transmission from a device owned by the subject ofthe image, long-range transmission such as via e-mail, or access througha website or other mechanism. When multiple images have been identified,a user may associate each image with a different contact in turn.

The cropped image is then provided for contact-related activities at box209. For example, the image can be displayed when a user of a devicepulls up a particular contact record. Also, as shown in FIG. 1C, theimage may be displayed with other images in a visual contacts directory.In addition, multiple images of a single contact may be stored, and asystem may create a photo album for that contact. Cropped images in thealbum may be linked back to the base images from which they werecropped, so that a user may browse a visual directory of the croppedimages to find one they like, and then may select a particular croppedimage to see a full image.

The cropped images may also be transferred to another device, such as amobile device of another user or to an initial user's laptop or desktopcomputer. Before or after being transferred, the image may be provided,for example, to a social networking web site, such as to show variouspeople who the particular user has been in contact with.

FIG. 2B illustrates exemplary steps that may be executed in an automaticcropping method. The method here is similar to that shown in FIG. 2A,but includes additional details that may be performed in certainimplementations. At 200, an image is taken or acquired. At 202, the useris queried as to whether the image should be stored. If the image is notto be stored, the image data is purged at 204. If the image is to bestored, the image data is stored to memory at 206. At 208, the user isqueried as to whether a contact image based on the stored image shouldbe added. If no contact image is to be added the embodiment loops backto 200. If a contact image is to be added, a face or faces areauto-identified at 210. At 212, a crop perimeter is generatedcorresponding to an identified person or persons.

At 214, the automatic cropping determines whether there are multiplepersons present in the image. If multiple persons are present, the userselects a particular person at 216. At 218, the user is queried as towhether the crop perimeter is to be adjusted. If the crop perimeter isto be adjusted, the user adjusts the crop perimeter at 220. At 222, theuser is queried as to whether the selected person is a new contact. Ifthe selected person is a new contact, the user is prompted for andinputs contact information at 224. If the person is not a new contact,the user is prompted to select a previously stored contact at 226. Thecontact information is stored at 228.

Referring now to FIG. 3, the exterior appearance of an exemplary device300 that implements the automatic cropping is illustrated. In moredetail, the hardware environment of the device 300 includes a display301 for displaying text, images, and video to a user; a keyboard 302 forentering text data and user commands into the device 300; a pointingdevice 304 for pointing, selecting, and adjusting objects displayed onthe display 301; an antenna 305; a network connection 306; a camera 307;a microphone 309; and a speaker 310. Although the device 300 shows anexternal antenna 305, the device 300 can include an internal antenna,which is not visible to the user.

The display 301 can display video, graphics, images, and text that makeup the user interface for the software applications used by the device300, and the operating system programs used to operate the device 300.Among the possible elements that may be displayed on the display 301 area new mail indicator 311 that alerts a user to the presence of a newmessage; an active call indicator 312 that indicates that a telephonecall is being received, placed, or is occurring; a data standardindicator 314 that indicates the data standard currently being used bythe device 300 to transmit and receive data; a signal strength indicator315 that indicates a measurement of the strength of a signal received byvia the antenna 305, such as by using signal strength bars; a batterylife indicator 316 that indicates a measurement of the remaining batterylife; or a clock 317 that outputs the current time.

The display 301 may also show application icons representing variousapplications available to the user, such as a web browser applicationicon 319, a phone application icon 320, a search application icon 321, acontacts application icon 322, a mapping application icon 324, an emailapplication icon 325, or other application icons. In one exampleimplementation, the display 301 is a quarter video graphics array (QVGA)thin film transistor (TFT) liquid crystal display (LCD), capable of16-bit or better color.

A user uses the keyboard (or “keypad”) 302 to enter commands and data tooperate and control the operating system and applications that providefor automatic cropping of images. The keyboard 302 includes standardkeyboard buttons or keys associated with alphanumeric characters, suchas keys 326 and 327 that are associated with the alphanumeric characters“Q” and “W” when selected alone, or are associated with the characters“*” and “1” when pressed in combination with key 329. A single key mayalso be associated with special characters or functions, includingunlabeled functions, based upon the state of the operating system orapplications invoked by the operating system. For example, when anapplication calls for the input of a numeric character, a selection ofthe key 327 alone may cause a “1” to be input.

In addition to keys traditionally associated with an alphanumerickeypad, the keyboard 302 also includes other special function keys, suchas an establish call key 330 that causes a received call to be answeredor a new call to be originated; a terminate call key 331 that causes thetermination of an active call; a drop down menu key 332 that causes amenu to appear within the display 301; a backward navigation key 334that causes a previously accessed network address to be accessed again;a favorites key 335 that causes an active web page to be placed in abookmarks folder of favorite sites, or causes a bookmarks folder toappear; a home page key 336 that causes an application invoked on thedevice 300 to navigate to a predetermined network address; or other keysthat provide for multiple-way navigation, application selection, andpower and volume control.

The user uses the pointing device 304 to select and adjust graphics andtext objects displayed on the display 301 as part of the interactionwith and control of the device 300 and the applications invoked on thedevice 300. The pointing device 304 is any appropriate type of pointingdevice, and may be a joystick, a trackball, a touch-pad, a camera, avoice input device, a touch screen device implemented in combinationwith the display 301, or any other input device.

The antenna 305, which can be an external antenna or an internalantenna, is a directional or omni-directional antenna used for thetransmission and reception of radiofrequency (RF) signals that implementpoint-to-point radio communication, wireless local area network (LAN)communication, or location determination. The antenna 305 may facilitatepoint-to-point radio communication using the Specialized Mobile Radio(SMR), cellular, or Personal Communication Service (PCS) frequencybands, and may implement the transmission of data using any number ordata standards. For example, the antenna 305 may allow data to betransmitted between the device 300 and a base station using technologiessuch as Wireless Broadband (WiBro), Worldwide Interoperability forMicrowave ACCess (WiMAX), 3GPP Long Term Evolution (LTE), Ultra MobileBroadband (UMB), High Performance Radio Metropolitan Network (HIPERMAN),iBurst or High Capacity Spatial Division Multiple Access (HC-SDMA), HighSpeed OFDM Packet Access (HSOPA), High-Speed Packet Access (HSPA), HSPAEvolution, HSPA+, High Speed. Upload Packet Access (HSUPA), High SpeedDownlink Packet Access (HSDPA), Generic Access Network (GAN), TimeDivision-Synchronous Code Division Multiple Access (TD-SCDMA),Evolution-Data Optimized (or Evolution-Data Only)(EVDO), TimeDivision-Code Division Multiple Access (TD-CDMA), Freedom Of MobileMultimedia Access (FOMA), Universal Mobile Telecommunications System(UMTS), Wideband Code Division Multiple Access (W-CDMA), Enhanced Datarates for GSM Evolution (EDGE), Enhanced GPRS (EGPRS), Code DivisionMultiple Access-2000 (CDMA2000), Wideband Integrated Dispatch EnhancedNetwork (WiDEN), High-Speed Circuit-Switched. Data (HSCSD), GeneralPacket Radio Service (GPRS), Personal Handy-Phone System (PHS), CircuitSwitched Data (CSD), Personal Digital Cellular (PDC), CDMAone, DigitalAdvanced Mobile Phone System (D-AMPS), Integrated Digital EnhancedNetwork (IDEN), Global System for Mobile communications (GSM), DataTAC,Mobitex, Cellular Digital Packet Data (CDPD), Hicap, Advanced MobilePhone System (AMPS), Nordic Mobile Phone (NMP), Autoradiopuhelin (ARP),Autotel or Public Automated Land Mobile (PALM), Mobiltelefonisystem D(MTD), Offentlig Landmobil Telefoni (OLT), Advanced. Mobile TelephoneSystem (AMTS), Improved Mobile Telephone Service (IMTS), MobileTelephone System (MTS), Push-To-Talk (PTT), or other technologies.Communication via W-CDMA, HSUPA, GSM, GPRS, and EDGE networks may occur,for example, using a QUALCOMM MSM7200A chipset with an QUALCOMM RTR6285™transceiver and PM7540™ power management circuit.

The wireless or wired computer network connection 306 may be a modemconnection, a local-area network (LAN) connection including theEthernet, or a broadband wide-area network (WAN) connection such as adigital subscriber line (DSL), cable high-speed internet connection,dial-up connection, T-1 line, T-3 line, fiber optic connection, orsatellite connection. The network connection 306 may connect to a LANnetwork, a corporate or government WAN network, the Internet, atelephone network, or other network. The network connection 306 uses awired or wireless connector. Example wireless connectors include, forexample, an INFRARED DATA ASSOCIATION (IrDA) wireless connector, a Wi-Fiwireless connector, an optical wireless connector, an INSTITUTE OFELECTRICAL AND ELECTRONICS ENGINEERS (IEEE) Standard 802.11 wirelessconnector, a BLUETOOTH wireless connector (such as a BLUETOOTH version1.2 or 3.0 connector), a near field communications (NFC) connector, anorthogonal frequency division multiplexing (OFDM) ultra wide band (UWB)wireless connector, a time-modulated ultra wide band (TM-UWB) wirelessconnector, or other wireless connector. Example wired, connectorsinclude, for example, a IEEE-1394 FIREWIRE connector, a Universal SerialBus (USB) connector (including a mini-B USB interface connector), aserial port connector, a parallel port connector, or other wiredconnector. In another implementation, the functions of the networkconnection 306 and the antenna 305 are integrated into a singlecomponent.

The camera 307 allows the device 300 to capture digital images, and maybe a scanner, a digital still camera, a digital video camera, otherdigital input device. In one example implementation, the camera 307 is a3 mega-pixel (MP) camera that utilizes a complementary metal-oxidesemiconductor (CMOS).

The microphone 309 allows the device 300 to capture sound, and may be anomni-directional microphone, a unidirectional microphone, abi-directional microphone, a shotgun microphone, or other type ofapparatus that converts sound to an electrical signal. The microphone309 may be used to capture sound generated by a user, for example whenthe user is speaking to another user during a telephone call via thedevice 300. Conversely, the speaker 310 allows the device to convert anelectrical signal into sound, such as a voice from another usergenerated by a telephone application program, or a ring tone generatedfrom a ring tone application program. Furthermore, although the device300 is illustrated in FIG. 3 as a handheld device, in furtherimplementations the device 300 may be a laptop, a workstation, amidrange computer, a mainframe, an embedded system, telephone, desktopPC, a tablet computer, a PDA, or other type of computing device.

FIG. 4 is a block diagram illustrating an internal architecture 400 ofthe device 300. The architecture includes a central processing unit(CPU) 401 where the computer instructions that comprise an operatingsystem or an application are processed; a display interface 402 thatprovides a communication interface and processing functions forrendering video, graphics, images, and texts on the display 301,provides a set of built-in controls (such as buttons, text and lists),and supports diverse screen sizes; a keyboard interface 404 thatprovides a communication interface to the keyboard 302; a pointingdevice interface 405 that provides a communication interface to thepointing device 304; an antenna interface 406 that provides acommunication interface to the antenna 305; a network connectioninterface 407 that provides a communication interface to a network overthe computer network connection 306; a camera interface 408 thatprovides a communication interface and processing functions forcapturing digital images from the camera 307; a sound interface 409 thatprovides a communication interface for converting sound into electricalsignals using the microphone 309 and for converting electrical signalsinto sound using the speaker 310; a random access memory (RAM) 410 wherecomputer instructions and data are stored in a volatile memory devicefor processing by the CPU 401; a read-only memory (ROM) 411 whereinvariant low-level systems code or data for basic system functions suchas basic input and output (I/O), startup, or reception of keystrokesfrom the keyboard 302 are stored in a non-volatile memory device; astorage medium 412 or other suitable type of memory (e.g. such as RAM,ROM, programmable read-only memory (PROM), erasable programmableread-only memory (EPROM), electrically erasable programmable read-onlymemory (EEPROM), magnetic disks, optical disks, floppy disks, harddisks, removable cartridges, flash drives), where the files thatcomprise an operating system 414, application programs 415 (including,for example, a web browser application, a widget or gadget engine, andor other applications, as necessary) and data files 416 are stored; anavigation module 417 that provides a real-world or relative position orgeographic location of the device 300; a power source 419 that providesan appropriate alternating current (AC) or direct current (DC) to powercomponents; and a telephony subsystem 420 that allows the device 300 totransmit and receive sound over a telephone network. The constituentdevices and the CPU 401 communicate with each other over a bus 421.

The CPU 401 can be one of a number of computer processors. In onearrangement, the computer CPU 401 is more than one processing unit. TheRAM 410 interfaces with the computer bus 421 so as to provide quick RAMstorage to the CPU 401 during the execution of software programs such asthe operating system application programs, and device drivers. Morespecifically, the CPU 401 loads computer-executable process steps fromthe storage medium 412 or other media into a field of the RAM 410 inorder to execute software programs. Data is stored in the RAM 410, wherethe data is accessed by the computer CPU 401 during execution. In oneexample configuration, the device 300 includes at least 128 MB of RAM,and 256 MB of flash memory.

The storage medium 412 itself may include a number of physical driveunits, such as a redundant array of independent disks (RAID), a floppydisk drive, a flash memory, a USB flash drive, an external hard diskdrive, thumb drive, pen drive, key drive, a High-Density DigitalVersatile. Disc (HD-DVD) optical disc drive, an internal hard diskdrive, a Blu-Ray optical disc drive, or a Holographic Digital DataStorage (HDDS) optical disc drive, an external mini-dual in-line memorymodule (DIMM) synchronous dynamic random access memory (SDRAM), or anexternal micro-DIMM SDRAM. Such computer readable storage media allowthe device 300 to access computer-executable process steps, applicationprograms and the like, stored on removable and non-removable memorymedia, to off-load data from the device 300, or to upload data onto thedevice 300.

A computer program product is tangibly embodied in storage medium 412, amachine-readable storage medium. The computer program product includesinstructions that, when read by a machine, operate to cause a dataprocessing apparatus to store image data in the mobile device. In someembodiments, the computer program product includes instructions thatenables the automatic cropping of images, as described herein.

The operating system 414 may be a LINUX-based operating system such asthe GOOGLE mobile device platform; APPLE MAC OS X; MICROSOFT WINDOWSNT/WINDOWS 2000/WINDOWS XP/WINDOWS MOBILE; a variety of UNIX-flavoredoperating systems; or a proprietary operating system for computers orembedded systems. The application development platform or framework forthe operating system 414 may be: BINARY RUNTIME ENVIRONMENT FOR WIRELESS(BREW); JAVA Platform, Micro Edition (JAVA ME) or JAVA 2 Platform, MicroEdition (J2ME) using the SUN MICROSYSTEMS JAVASCRIPT programminglanguage; PYTHON™, FLASH LITE, or MICROSOFT .NET Compact, or anotherappropriate environment.

The device stores computer-executable code for the operating system 414,and the application programs 415 such as an email, instant messaging, avideo service application, a mapping application word processing,spreadsheet, presentation, gaming, mapping, web browsing, JAVASCRIPTengine, or other applications. For example, one implementation may allowa user to access the GOOGLE GMAIL email application, the GOOGLE TALKinstant messaging application, a YOUTUBE video service application, aGOOGLE MAPS or GOOGLE EARTH mapping application, or a GOOGLE PICASAimaging editing and presentation application. The application programs415 may also include a widget or gadget engine, such as a TAFRI™ widgetengine, a MICROSOFT gadget engine such as the WINDOWS SIDEBAR gadgetengine or the KAPSULES™ gadget engine, a YAHOO! widget engine such asthe KONFABULTOR™ widget engine, the APPLE DASHBOARD widget engine, theGOOGLE gadget engine, the KLIPFOLIO widget engine, an OPERA™ widgetengine, the WIDSETS™ widget engine, a proprietary widget or gadgetengine, or other widget or gadget engine the provides host systemsoftware for a physically-inspired applet on a desktop.

Although it is possible to provide for automatic cropping of imagesusing the above-described implementation, it is also possible toimplement the functions according to the present disclosure as a dynamiclink library (DLL), or as a plug-in to other application programs suchas an Internet web-browser such as the FOXFIRE web browser, the APPLESAFARI web browser or the MICROSOFT INTERNET EXPLORER web browser.

The navigation module 417 may determine an absolute or relative positionof the device, such as by using the Global Positioning System (GPS)signals, the GLObal NAvigation Satellite System (GLONASS), the Galileopositioning system, the Beidou Satellite Navigation and PositioningSystem, an inertial navigation system, a dead reckoning system, or byaccessing address, Internet protocol (IP) address, or locationinformation in a database. The navigation module 417 may also be used tomeasure angular displacement, orientation, or velocity of the device300, such as by using one or more accelerometers.

FIG. 5 is a block diagram illustrating exemplary components of theoperating system 414 used by the device 300, in the case where theoperating system 414 is the GOOGLE mobile device platform. The operatingsystem 414 invokes multiple processes, while ensuring that theassociated phone application is responsive, and that waywardapplications do not cause a fault (or “crash”) of the operating system.Using task switching, the operating system 414 allows for the switchingof applications while on a telephone call, without losing the state ofeach associated application. The operating system 414 may use anapplication framework to encourage reuse of components, and provide ascalable user experience by combining pointing device and keyboardinputs and by allowing for pivoting. Thus, the operating system canprovide a rich graphics system and media experience, while using anadvanced, standards-based web browser.

The operating system 414 can generally be organized into six components:a kernel 500, libraries 501, an operating system runtime 502,application libraries 504, system services 505, and applications 506.The kernel 500 includes a display driver 507 that allows software suchas the operating system 414 and the application programs 515 to interactwith the display 301 via the display interface 402, a camera driver 509that allows the software to interact with the camera 307; a BLUETOOTHdriver 510; a M-Systems driver 511; a binder (IPC) driver 512, a USBdriver 514 a keypad driver 515 that allows the software to interact withthe keyboard 302 via the keyboard interface 404; a WiFi driver 516;audio drivers 517 that allow the software to interact with themicrophone 309 and the speaker 310 via the sound interface 409; anti apower management component 519 that allows the software to interact withand manage the power source 519.

The BLUETOOTH driver, which in one implementation is based on the BlueZBLUETOOTH stack for LINUX-based operating systems, provides profilesupport for headsets and hands-free devices, dial-up networking,personal area networking (PAN), or audio streaming (such as by AdvanceAudio Distribution Profile (A2DP) or Audio/Video Remote Control Profile(AVRCP). The BLUETOOTH driver provides JAVA bindings for scanning,pairing and unpairing, and service queries.

The libraries 501 include a media framework 520 that supports standardvideo, audio and still-frame formats (such as Moving Picture ExpertsGroup (MPEG)-4, H.264, MPEG-1 Audio Layer-3 (MP3), Advanced Audio Coding(AAC), Adaptive Multi-Rate (AMR), Joint Photographic Experts Group(JPEG), and others) using an efficient JAVA Application ProgrammingInterface (API) layer; a surface manager 521; a simple graphics library(SGL) 522 for two-dimensional application drawing; an Open GraphicsLibrary for Embedded Systems (OpenGL ES) 524 for gaming andthree-dimensional rendering; a C standard library (LIBC) 525; aLIBWEBCORE library 526; a FreeType library 527; an SSL 529; and anSQLite library 530.

The operating system runtime 502 includes core JAVA libraries 531, and aDalvik virtual machine 532. The Dalvik virtual machine 532 is a custom,virtual machine that runs a customized file format (.DEX).

The operating system 414 can also include Mobile Information DeviceProfile (MIDP) components such as the MIDP JAVA Specification Requests(JSRs) components, MIDP runtime, and MIDP applications as shown in FIG.5. The MIDP components can support MIDP applications running on thedevice 300.

With regard to graphics rendering, a system-wide composer managessurfaces and a frame buffer and handles window transitions, using theOpenGL ES 524 and two-dimensional hardware accelerators for itscompositions.

The Dalvik virtual machine 532 may be used with an embedded environment,since it uses runtime memory very efficiently, implements a CPUoptimized bytecode interpreter, and supports multiple virtual machineprocesses per device. The customfile format (.DEX) is designed forruntime efficiency, using a shared constant pool to reduce memory,read-only structures to improve cross-process sharing, concise, andfixed-width instructions to reduce parse time, thereby allowinginstalled applications to be translated into the custom file formal atbuild-time. The associated bytecodes are designed for quickinterpretation, since register-based instead of stack-based instructionsreduce memory and dispatch overhead, since using fixed widthinstructions simplifies parsing, and since the 16-bit code unitsminimize reads.

The application libraries 504 include a view system 534, a resourcemanager 535, and content providers 537. The system services 505 includesa status bar 539; an application launcher 540; a package manager 541that maintains information for all installed applications; a telephonymanager 542 that provides an application level JAVA interface to thetelephony subsystem 420; a notification manager 544 that allows allapplications access to the status bar and on-screen notifications; awindow manager 545 that allows multiple applications with multiplewindows to share the display 301; and an activity manager 546 that runseach application in a separate process, manages an application lifecycle, and maintains a cross-application history.

The applications 506 include a home application 547, a dialerapplication 549, a contacts application 550, a browser application 551,and automatic cropping application 552.

The telephony manager 542 provides event notifications (such as phonestate, network state, Subscriber Identity Module (SIM) status, orvoicemail status), allows access to state information (such as networkinformation, SIM information, or voicemail presence), initiates calls,and queries and controls the call state. The browser application 551renders web pages in a full, desktop-like manager, including navigationfunctions. Furthermore, the browser application 551 allows singlecolumn, small screen rendering, and provides for the embedding of HTMLviews into other applications.

FIG. 6 is a block diagram illustrating exemplary processes implementedby the operating system kernel 600. Generally, applications and systemservices run in separate processes, where the activity manager 546 runseach application in a separate process and manages the application lifecycle. The applications run in their own processes, although manyactivities or services can also run in the same process. Processes arestarted and stopped as needed to run an application's components, andprocesses may be terminated to reclaim resources. Each application isassigned its own process, whose name is the application's package name,and individual parts of an application can be assigned another processname.

Some processes can be persistent. For example, processes associated withcore system components such as the surface manager 616, the windowmanager 614, or the activity manager 610 can be continuously executedwhile the device 300 is powered. Additionally, some application-specificprocess can also be persistent. For example, processes associated withthe dialer application 621, may also be persistent.

The processes implemented by the operating system kernel 600 maygenerally be categorized as system services processes 601, dialerprocesses 602, browser processes 604, and maps processes 605. The systemservices processes 601 include status bar processes 606 associated withthe status bar 539; application launcher processes 607 associated withthe application launcher 540; package manager processes 609 associatedwith the package manager 541; activity manager processes 610 associatedwith the activity manager 546; resource manager processes 611 associatedwith a resource manager 611 that provides access to graphics, localizedstrings, and XML layout descriptions; notification manger processes 612associated with the notification manager 544; window manager processes614 associated with the window manager 545; core JAVA librariesprocesses 615 associated with the core JAVA libraries 531; surfacemanager processes 616 associated with the surface manager 521; Dalvikvirtual machine processes 617 associated with the Dalvik virtual machine532, LIBC processes 619 associated with the LIBC library 525; andautomatic cropping processes 620 associated with the automatic croppingapplication 552.

The dialer processes 602 include dialer application processes 621associated with the dialer application 549; telephony manager processes622 associated with the telephony manager 542; core JAVA librariesprocesses 624 associated with the core JAVA libraries 531; Dalvikvirtual machine processes 625 associated with the Dalvik Virtual machine532; and LIBC processes 626 associated with the LIBC library 525. Thebrowser processes 604 include browser application processes 627associated with the browser application 551; core JAVA librariesprocesses 629 associated with the core JAVA libraries 531; Dalvikvirtual machine processes 630 associated with the Dalvik virtual machine532; LIBWEBCORE processes 631 associated with the LIBWEBCORE library526; and LIBC processes 632 associated with the LIBC library 525.

The maps processes 605 include maps application processes 634, core JAVAlibraries processes 635, Dalvik virtual machine processes 636, and LIBCprocesses 637. Notably, some processes, such as the Dalvik virtualmachine processes, may exist within one or more of the systems servicesprocesses 601, the dialer processes 602, the browser processes 604, andthe maps processes 605.

FIG. 7 shows an example of a generic computer device 700 and a genericmobile computer device 750, which may be used with the techniquesdescribed here. Computing device 700 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 750 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smartphones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 700 includes a processor 702, memory 704, a storagedevice 706, a high-speed interface 708 connecting to memory 704 andhigh-speed expansion ports 710, and a low speed interface 712 connectingto low speed bus 714 and storage device 706. Each of the components 702,704, 706, 708, 710, and 712, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 702 can process instructions for executionwithin the computing device 700, including instructions stored in thememory 704 or on the storage device 706 to display graphical informationfor a GUI on an external input/output device, such as display 716coupled to high speed interface 708. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices700 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 704 stores information within the computing device 700. Inone implementation, the memory 704 is a volatile memory unit or units.In another implementation, the memory 704 is a non-volatile memory unitor units. The memory 704 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 706 is capable of providing mass storage for thecomputing device 700. In one implementation, the storage device 706 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 704, the storage device 706,memory on processor 702, or a propagated signal.

The high speed controller 708 manages bandwidth-intensive operations forthe computing device 700, while the low speed controller 712 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 708 iscoupled to memory 704, display 716 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 710, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 712 is coupled to storage device 706 and low-speed expansionport 714. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 700 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 720, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 724. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 722. Alternatively, components from computing device 700 may becombined with other components in a mobile device (not shown), such asdevice 750. Each of such devices may contain one or more of computingdevice 700, 750, and an entire system may be made up of multiplecomputing devices 700, 750 communicating with each other.

Computing device 750 includes a processor 752, memory 764, aninput/output device such as a display 754, a communication interface766, and a transceiver 768, among other components. The device 750 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 750, 752,764, 754, 766, and 768, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 752 can execute instructions within the computing device750, including instructions stored in the memory 764. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 750, such ascontrol of user interfaces, applications run by device 750, and wirelesscommunication by device 750.

Processor 752 may communicate with a user through control interface 758and display interface 756 coupled to a display 754. The display 754 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light. Emitting Diode) display, or other appropriatedisplay technology. The display interface 756 may comprise appropriatecircuitry for driving the display 754 to present graphical and otherinformation to a user. The control interface 758 may receive commandsfrom a user and convert them for submission to the processor 752. Inaddition, an external interface 762 may be provide in communication withprocessor 752, so as to enable near area communication of device 750with other devices. External interface 762 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 764 stores information within the computing device 750. Thememory 764 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 774 may also be provided andconnected to device 750 through expansion interface 772, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 774 may provide extra storage space fordevice 750, or may also store applications or other information fordevice 750. Specifically, expansion memory 774 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 774may be provide as a security module for device 750, and may beprogrammed with instructions that permit secure use of device 750. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 764, expansionmemory 774, memory on processor 752, or a propagated signal that may bereceived, for example, over transceiver 768 or external interface 762.

Device 750 may communicate wirelessly through communication interface766, which may include digital signal processing circuitry wherenecessary. Communication interface 766 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 768. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 770 mayprovide additional navigation- and location-related wireless data todevice 750, which may be used as appropriate by applications running ondevice 750.

Device 750 may also communicate audibly using audio codec 760, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 760 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 750. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 750.

The computing device 750 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 780. It may also be implemented as part of asmartphone 782, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client and isserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments of the automatic and manual cropping of pictureshave been described. Nevertheless, it will be understood that variousmodifications may be made without departing from the spirit and scope ofthe invention. In addition, the logic flows depicted in the figures donot require the particular order shown, or sequential order, to achievedesirable results. In addition, other steps may be provided, or stepsmay be eliminated, from the described flows, and other components may beadded to, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method, comprising: generating, by a mobiledevice, an image using a camera of the mobile device; displaying, by themobile device, the image on a display of the mobile device; responsiveto generating the image, automatically displaying, by the mobile device,a user prompt querying whether a contact image based on the image is tobe generated; receiving user input responsive to the query, the userinput indicating that the contact image is to be generated; in responseto the user input, automatically: identifying a portion of at least oneperson in the image using an automatic recognition process, and definingthe contact image based on cropping the image, the contact imageincluding at least a portion of the portion of the at least one person;and associating the contact image with a contact record stored incomputer-readable memory of the mobile device, the associating beingbased on the portion of the at least one person.
 2. The method of claim1, further comprising prompting a user of the mobile device to selectone of a new contact and a previous contact to associate with thecontact image.
 3. The method of claim 2, further comprising: updatingcontact information using the contact image when the user selects apreviously stored contact; and storing new contact information includingthe contact image when the user selects a new contact.
 4. The method ofclaim 1, further comprising: generating a crop perimeter thatcorresponds to the portion of the at least one person; enabling a userto adjust dimensions of the crop perimeter to provide an adjusted cropperimeter.
 5. The method of claim 1, further comprising: determiningautomatically that multiple persons are present in the image; promptinga user of the mobile device to manually select a single person of themultiple persons present in the image; and receiving a manual selectionof the single person of the multiple persons present in the image fromthe user of the mobile device, wherein creating the contact image isbased on the manual selection of the single person.
 6. The method ofclaim 5, further comprising: automatically generating crop perimeterscorresponding to each of the multiple persons, wherein the step ofenabling the user to select the single person includes enabling the userto select one of the crop perimeters to provide a selected cropperimeter.
 7. The method of claim 6, wherein the contact image is basedon one of the selected crop perimeter and an adjusted crop perimeter. 8.The method of claim 1, wherein the portion comprises a face.
 9. Asystem, comprising: a camera for generating an image on the mobiledevice; one or more processors for: displaying the image on a display ofthe mobile device, responsive to generating of the image, automaticallydisplaying a user prompt querying whether a contact image based on theimage is to be generated, receiving user input responsive to the query,the user input indicating that the contact image is to be generated, inresponse to the user input, automatically: identifying a portion of atleast one person in the image using an automatic recognition process,and defining the contact image based on cropping the image, the contactimage including at least a portion of the portion of the at least oneperson, and associating the contact image with a contact record theassociating being based on the portion of the at least one person; and acomputer-readable memory for storing the contact image.
 10. The systemof claim 9, wherein the one or more processors prompt the user to storethe contact image as a contact.
 11. The system of claim 9, wherein theone or more processors are operable to perform actions comprising:determining automatically that multiple persons are present in theimage; prompting a user of the mobile device to manually select a singleperson of the multiple persons present in the image; and receiving amanual selection of the single person of the multiple persons present inthe image from the user of the mobile device, wherein creating thecontact image is based on the manual selection of the single person. 12.The system of claim 9, wherein the portion comprises a face.
 13. Amobile device, comprising: a means for generating an image on the mobiledevice; a processor that: displays the image on a display of the mobiledevice, responsive to generating the image, automatically displays auser prompt querying whether a contact image based on the image is to begenerated, receives user input responsive to the query, the user inputindicating that the contact image is to be generated, in response to theuser input, automatically: identifies a portion of at least one personin the image using an automatic recognition process, defines the contactimage based on cropping the image, the contact image including at leasta portion of the portion of the at least one person, and associates thecontact image with a contact record, the associating being based on theportion of the at least one person; and a memory to store the contactimage.
 14. The mobile device of claim 13, further comprising a graphicaluser interface (GUI) that prompts a user to store the contact image as acontact.
 15. The mobile device stem of claim 14, wherein the GUI promptsthe user to select one of a new contact and a previous contact.
 16. Themobile device of claim 15, wherein the processor updates contactinformation using the contact image when the user selects a previouslystored contact, and wherein the memory stores new contact informationincluding the contact image when the user selects a new contact.
 17. Themobile device of claim 13, wherein the processor generates a cropperimeter that corresponds to the portion of the at least one person andenables a user to adjust dimensions of the crop perimeter to provide anadjusted crop perimeter.
 18. The mobile device of claim 17, wherein thecontact image is based on one of the crop perimeter and the adjustedcrop perimeter.
 19. The mobile device of claim 13, wherein the processorperforms actions comprising: determining automatically that multiplepersons are present in the image; prompting a user of the mobile deviceto manually select a single person of the multiple persons present inthe image; receiving a manual selection of the single person of themultiple persons present in the image from the user of the mobiledevice; and creating the contact image of the at least one person basedon the manual selection of the single person.
 20. The mobile device ofclaim 19, wherein the processor generates crop perimeters correspondingto each of the multiple persons, and enables the user to select a singleperson by selecting one of the crop perimeters to provide a selectedcrop perimeter.
 21. The mobile device of claim 20, wherein the processorenables the user to adjust dimensions of a selected crop perimeter toprovide an adjusted crop perimeter.
 22. The mobile device of claim 21,wherein the contact image is based on one of the selected crop perimeterand the adjusted crop perimeter.
 23. The mobile device of claim 13,wherein the processor queries a user to determine whether to store theimage to the memory, and wherein the memory stores the image if the userindicates as such and purges the image if the user does not indicate assuch.
 24. The mobile device of claim 13, wherein the portion comprises aface.